// 1. 字面量类型
// const age = 18
// age = 19
// age = 30

// const str = '张三'
// str = '李四'


// 2. 字面量联合类型
// type Gender = '男' | '女'
// let gender: Gender = '男'
// gender = '女'
// gender = '男'

// 3. any 类型
// 逃避类型检查
// let obj: any = { age: 18 }
// obj.bar = 100
// obj()
// const n: number = obj

// let a;

// 4. Pick和Omit(内置类型)
// type Person = {
//   name: string
//   age: number
//   gender: string
//   hobby: string[]
// }

// const p1: Person = {} 
// type NewPerson = {
//   name: string
// }

// type NewPerson = Pick<Person, 'name' | 'age'>
// const p1: NewPerson = {name: '张三', age: 18}


// type NewPerson = Omit<Person, 'hobby'>
// const p2: NewPerson = {
//   name: '张三',
//   age: 18,
//   gender: '男'
// }